package com.dingding.util;

import java.util.ArrayList;
import java.util.UUID;

import org.apache.log4j.Logger;
import org.junit.Test;

import com.esms.MessageData;
import com.esms.PostMsg;
import com.esms.common.entity.Account;
import com.esms.common.entity.GsmsResponse;
import com.esms.common.entity.MTPack;
import com.esms.common.entity.MTPack.MsgType;
import com.esms.common.entity.MTPack.SendType;

/**
 * 
 * @ClassName: SendPhoneMessages
 * @Description: 短信发送（玄武）
 * @author yhq
 * @date 2015-7-30 下午03:20:25
 */
public class SendMessagesUtil {

	private static final Logger log = Logger.getLogger(SendMessagesUtil.class);

	/**
	 * 
	 * @Title: sendMessage
	 * @Description: 将传入的短信内容发送给该手机
	 * @param phoneNo
	 *            收信人
	 * @param sendText
	 *            短信内容
	 * @return boolean true:发送成功 false：发送失败
	 * @throws
	 * 
	 */
	public static boolean sendMessage(String phoneNo, String sendText) {

		Account account = new Account("bjpddd@bjpddd", "]wO.Zb29");
		PostMsg pm = new PostMsg();
		// 设置网关的IP和port,用于发送信息
		pm.getCmHost().setHost("211.147.239.62", 9080);
		// 设置网关的IP和port,用于获取账户信息、上行、状态报告等等
		pm.getWsHost().setHost("211.147.239.62", 9070);
		// 拼装发送的信息包
		MTPack pack = new MTPack();
		pack.setBatchID(UUID.randomUUID()); // 信息批次唯一序列号，不是必须
		pack.setBatchName("单条短信测试批次");// 批次名称，
		pack.setMsgType(MsgType.SMS);// 发送类型：短信
		pack.setBizType(1); // 信息业务类型，不是必须
		pack.setDistinctFlag(false);// 是否过滤重复号码
		pack.setSendType(SendType.MASS);// 发送类型

		ArrayList<MessageData> msgs = new ArrayList<MessageData>();
		// 单发，一号码一内容
		msgs.add(new MessageData(phoneNo, sendText));
		// 添加要发送的手机号，及内容
		pack.setMsgs(msgs);

		GsmsResponse resp = null;
		try {

			resp = pm.post(account, pack);
			// 获取发送短信返回的消息内容
			String status = resp.getMessage();
			if (!"成功".equals(status)) {
				log.error("发送短信失败！响应信息：" + status);
				return false;
			} else {
				return true;
			}
			
		} catch (Exception e) {
			log.error(
					"发送短信出现异常！" + SendMessagesUtil.class + "方法：sendMessage()",
					e);
			return false;
		}

	}

	/**
	 * @Title: testSendMessage
	 * @Description:短信发送测试
	 * @author cheshaowei
	 * @throws
	 */
	@Test
	@SuppressWarnings("all")
	public void testSendMessage(){

		// 手机号
		String phoneNo = "13641075704";
		// 发送内容
		String sendText = "玄武短信测试！";

		this.sendMessage(phoneNo, sendText);

	}
	
}
